//package approval.dao;
//
//import java.sql.CallableStatement;
//import java.sql.ResultSet;
//import java.sql.Types;
//import java.util.ArrayList;
//
//import javax.faces.bean.ManagedBean;
//import javax.faces.bean.ManagedProperty;
//import javax.faces.bean.SessionScoped;
//import javax.faces.context.FacesContext;
//import javax.faces.event.ActionEvent;
//import javax.faces.event.AjaxBehaviorEvent;
//import javax.servlet.http.HttpSession;
//
//import resource.pojo.Approvedoc;
//import resource.pojo.ListApprove;
//import model.util.UtilInitLang;
//import models.pojo.Employee;
//import models.util.MySqlDataAccessHelper;
//
//@ManagedBean(name="docWillApprove")
//@SessionScoped
//public class DocWillApprove {
//
//	@ManagedProperty(value = "#{utilInitLang.getClassEntity()}")
//	private UtilInitLang utilInitLang;
//	private int numDocWillApprove;
//	private MySqlDataAccessHelper mysqlHelper=new MySqlDataAccessHelper();
//	private ArrayList<Approvedoc> allWillDocApprove = new ArrayList<Approvedoc>();
//	private Approvedoc currentApprovedoc;
//	private String script;
//	private String messErr;
//	private ListApprove curentListApprove;
//	private ArrayList<ListApprove> allListApprove = new ArrayList<ListApprove>();
//	
//	
//	public UtilInitLang getUtilInitLang() {
//		return utilInitLang;
//	}
//
//	public void setUtilInitLang(UtilInitLang utilInitLang) {
//		this.utilInitLang = utilInitLang;
//	}
//
//	public String getMessErr() {
//		return messErr;
//	}
//
//	public void setMessErr(String messErr) {
//		this.messErr = messErr;
//	}
//
//	public int getNumDocWillApprove() {
//		try {
//			mysqlHelper.open();
//			CallableStatement stm= mysqlHelper.getConnection().prepareCall("{call numdocWillApprove(?)}");
//			stm.registerOutParameter(1,Types.INTEGER);
//			stm.execute();
//			numDocWillApprove=stm.getInt(1);
//		} catch (Exception e) {
//		}finally{
//			mysqlHelper.close();
//		}
//		return numDocWillApprove;
//	}
//
//	public void setNumDocWillApprove(int numDocWillApprove) {
//		this.numDocWillApprove = numDocWillApprove;
//	}
//
//	public ArrayList<Approvedoc> getAllWillDocApprove() {
//		allWillDocApprove.clear();
//		try {
//			mysqlHelper.open();
//			String sql = "select * from approvedoc where IDStatus=2 and not ISNULL(IDGroupApprove)";
//			ResultSet rs = mysqlHelper.executeQuery(sql);
//			while (rs.next()) {
//				Approvedoc ap = new Approvedoc(rs.getInt("IDApproveDoc"),
//						rs.getString("Tile"), rs.getString("Content"),
//						rs.getString("IDEmployee"),
//						rs.getString("IDGroupApprove"),
//						rs.getDate("Timecreate"), rs.getInt("IDStatus"),
//						rs.getInt("IDTypeDoc"), rs.getDate("TimeApprove"),
//						rs.getString("comment"),
//						rs.getString("Description"));
//				if (!checkApproved(ap.getGroupApprove().getAllListApprove())) {
//					allWillDocApprove.add(ap);
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			mysqlHelper.close();
//		}
//		return allWillDocApprove;
//	}
//	private boolean checkApproved(ArrayList<ListApprove> list){
//		for(ListApprove lst:list){
//			if(lst.getiDStatus()==5)
//				return true;
//		}
//		return false;
//	}
//	
//	public void checkApprove(ActionEvent e) {
//		Approvedoc ap = this.getCurrentApprovedoc();
//		if (ap != null) {
//			if (checkInListApprove(ap)) {
//				setScript("RichFaces.ui.PopupPanel.showPopupPanel('pApprove')");
//			} else {
//				setScript("RichFaces.ui.PopupPanel.showPopupPanel('pErrApprove')");
//			}
//		} else {
//			setMessErr(getUtilInitLang().getErrNoDocApprove());
//			setScript("RichFaces.ui.PopupPanel.hidePopupPanel('pApprove');RichFaces.ui.PopupPanel.showPopupPanel('pErrApprove')");
//		}
//	}
//
//	public boolean checkInListApprove(Approvedoc ap) {
//
//		FacesContext f = FacesContext.getCurrentInstance();
//		HttpSession ss = (HttpSession) f.getExternalContext().getSession(true);
//		Object obj = ss.getAttribute("Employee");
//		if (obj != null) {
//			Employee em = (Employee) obj;
//			ArrayList<ListApprove> appListApp = ap.getGroupApprove()
//					.getAllListApprove();
//
//			for (int i = 0; i < appListApp.size(); i++) {
//				ListApprove lst = appListApp.get(i);
//				if (lst.getiDEmployee().equalsIgnoreCase(em.getIdemployee())) {
//					if (lst.getTypeApprove().getIdTypeApprove() == 2) {
//						setMessErr(getUtilInitLang().getMessApprove());
//						setCurentListApprove(lst);
//						return true;
//					}
//					if (lst.getiDStatus() == 5) {
//						setMessErr(getUtilInitLang().getErrDocApproved());
//						setCurentListApprove(null);
//						return false;
//					} else if (i == 0 && lst.getiDStatus() == 4) {
//						setMessErr(getUtilInitLang().getMessApprove());
//						setCurentListApprove(lst);
//						return true;
//					} else {
//						ListApprove temp = appListApp.get(i - 1);
//						if (temp.getiDStatus() == 4) {
//							setMessErr(getUtilInitLang()
//									.getErrPermissionApprove());
//							setCurentListApprove(null);
//							return false;
//						} else {
//							setMessErr(getUtilInitLang()
//									.getMessApprove());
//							setCurentListApprove(lst);
//							return true;
//						}
//					}
//				}
//			}
//		}
//		setMessErr(getUtilInitLang().getErrPermissionApprove());
//		return false;
//	}
//	public void approve(ActionEvent e){
//		mysqlHelper.open();
//		try {
//			ListApprove lst = getCurentListApprove();
//			Approvedoc app = getCurrentApprovedoc();
//			if (app != null) {
//				if (lst.getTypeApprove().getIdTypeApprove() == 2) {
//					String sqlApp = "update approvedoc set IDStatus=1 where IDApproveDoc="
//							+ app.getiDApproveDoc();
//					String sqlLst = "update listapprove set IDStatus=5,DateApprove=NOW() where ID="
//							+ lst.getIdListApprove();
//					mysqlHelper.executeUpdate(sqlApp);
//					mysqlHelper.executeUpdate(sqlLst);
//					setCurentListApprove(null);
//					setCurrentApprovedoc(null);
//					allListApprove.clear();
//					return;
//				}
//				ArrayList<ListApprove> appListApp = app.getGroupApprove()
//						.getAllListApprove();
//				int lastOrder = appListApp.get(appListApp.size() - 1)
//						.getOrder();
//				if (lastOrder == lst.getOrder()) {
//					String sqlApp = "update approvedoc set IDStatus=1 where IDApproveDoc="
//							+ app.getiDApproveDoc();
//					String sqlLst = "update listapprove set IDStatus=5,DateApprove=NOW() where ID="
//							+ lst.getIdListApprove();
//					mysqlHelper.executeUpdate(sqlApp);
//					mysqlHelper.executeUpdate(sqlLst);
//					allListApprove.clear();
//					setCurentListApprove(null);
//					setCurrentApprovedoc(null);
//				} else {
//					String sqlLst = "update listapprove set IDStatus=5,DateApprove=NOW() where ID="
//							+ lst.getIdListApprove();
//					mysqlHelper.executeUpdate(sqlLst);
//					allListApprove.clear();
//					allListApprove.addAll(app.getGroupApprove()
//							.getAllListApprove());
//					setCurentListApprove(null);
//				}
//			}
//		} catch (Exception ex) {
//
//		} finally {
//			mysqlHelper.close();
//		}
//	}
//	public void checkDecline(ActionEvent e){
//		
//	}
//	public void selectDoc(AjaxBehaviorEvent e) {
//		currentApprovedoc = (Approvedoc) e.getComponent().getAttributes()
//				.get("approvedoc");
//	}
//	public void setAllWillDocApprove(ArrayList<Approvedoc> allWillDocApprove) {
//		this.allWillDocApprove = allWillDocApprove;
//	}
//
//	public MySqlDataAccessHelper getMysqlHelper() {
//		return mysqlHelper;
//	}
//
//	public void setMysqlHelper(MySqlDataAccessHelper mysqlHelper) {
//		this.mysqlHelper = mysqlHelper;
//	}
//
//	public Approvedoc getCurrentApprovedoc() {
//		return currentApprovedoc;
//	}
//
//	public void setCurrentApprovedoc(Approvedoc currentApprovedoc) {
//		this.currentApprovedoc = currentApprovedoc;
//	}
//
//	public String getScript() {
//		return script;
//	}
//
//	public void setScript(String script) {
//		this.script = script;
//	}
//
//	public ListApprove getCurentListApprove() {
//		return curentListApprove;
//	}
//
//	public void setCurentListApprove(ListApprove curentListApprove) {
//		this.curentListApprove = curentListApprove;
//	}
//
//	public ArrayList<ListApprove> getAllListApprove() {
//		return allListApprove;
//	}
//
//	public void setAllListApprove(ArrayList<ListApprove> allListApprove) {
//		this.allListApprove = allListApprove;
//	}
//	
//	
//	
//}
